package pe.com.cotelasa.scp.dominio.modelo;

import java.util.Date;
import java.util.List;

import pe.com.cotelasa.scp.dominio.excepcion.ModelExcepcion;
import pe.com.cotelasa.scp.entidad.Banco;
import pe.com.cotelasa.scp.entidad.CuentaBancaria;
import pe.com.cotelasa.scp.entidad.MovimientoCuentaBancaria;
import pe.com.cotelasa.scp.entidad.ParametroDetalle;
import pe.com.cotelasa.scp.entidad.TipoMoneda;

public interface MovCtaBancariaModel {

    public MovimientoCuentaBancaria obtenerMovimientoCuentaBancaria(Integer id) throws ModelExcepcion;

    public List<MovimientoCuentaBancaria> obtenerListaMovimientoCuentaBancaria(MovimientoCuentaBancaria beanMovimientoCuentaBancaria, Date fechaInicio, Date fechaFinal) throws ModelExcepcion;
    
    public void guardarMovimientoCuentaBancaria(MovimientoCuentaBancaria beanMovimientoCuentaBancaria) throws ModelExcepcion;

    public void guardarMovimientoCuentaTransferida(MovimientoCuentaBancaria beanMovimientoCuentaBancaria, CuentaBancaria cuenta) throws ModelExcepcion;

    public void actualizarMovimientoCuentaBancaria(MovimientoCuentaBancaria beanMovimientoCuentaBancaria) throws ModelExcepcion;

    public void eliminarMovimientoCuentaBancaria(MovimientoCuentaBancaria beanMovimientoCuentaBancaria) throws ModelExcepcion;

    public List<Banco> obtenerListaBancosActivos() throws ModelExcepcion;

    public List<TipoMoneda> obtenerListaMonedaActivos() throws ModelExcepcion;

    public List<ParametroDetalle> obtenerListaTipoMovimiento() throws ModelExcepcion;

    public List<ParametroDetalle> obtenerListaFormaMovimiento() throws ModelExcepcion;

    public List<CuentaBancaria> obtenerListaCuentaBancaria(Integer idEmpresa) throws ModelExcepcion;

    public List<CuentaBancaria> obtenerListaCuentaBancariasActivas() throws ModelExcepcion;
    
    public List<CuentaBancaria> obtenerListaCuentaBancariaConsulta(Integer idEmpresa,Integer idCuentaBancaria) throws ModelExcepcion;

    public CuentaBancaria obtenerCuentaBancaria(Integer idCuentaBancaria) throws ModelExcepcion;

    public void enviarCorreoError(Throwable e, String mensajeError);
    
    public void actualizarMontoCuenta(Integer idMovCuentaBancaria) throws ModelExcepcion;
    
    public void actualizarMovimientoCuentaBancariaSinMontos(MovimientoCuentaBancaria beanMovimientoCuentaBancaria) throws ModelExcepcion;
}
